/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.unp.tasi.loja.entidades;

import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 *
 * @author jfrank
 */
@Entity
@Table(name = "item_pedido")
public class ItemPedido implements Serializable {

  private static final long serialVersionUID = 1L;
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
  @ManyToOne
  private Pedido pedido;
  /* Nao existe relacionamento Um para Muitos entre Produto e Item de Pedidos, pois
  nao ha interesse na bidirecionalidade de relacionamento */
  @ManyToOne
  private Produto produto;
  private Long quantidade;

  /**
   * Total do item do pedido em centavos
   * @return
   */
  public Long getTotalCentavos() {
    return produto.getPrecoEmCentavos() * quantidade;
  }

  public Double getTotal() {
    return getTotalCentavos() / 100.0;
  }

  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  @Override
  public int hashCode() {
    int hash = 0;
    hash += (id != null ? id.hashCode() : 0);
    return hash;
  }

  @Override
  public boolean equals(Object object) {
    // TODO: Warning - this method won't work in the case the id fields are not set
    if (!(object instanceof ItemPedido)) {
      return false;
    }
    ItemPedido other = (ItemPedido) object;
    if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
      return false;
    }
    return true;
  }

  @Override
  public String toString() {
    return "br.unp.tasi.loja.entidades.ItemPedido[id=" + id + "]";
  }

  /**
   * @return the produto
   */
  public Produto getProduto() {
    return produto;
  }

  /**
   * @param produto the produto to set
   */
  public void setProduto(Produto produto) {
    this.produto = produto;
  }

  /**
   * @return the quantidade
   */
  public Long getQuantidade() {
    return quantidade;
  }

  /**
   * @param quantidade the quantidade to set
   */
  public void setQuantidade(Long quantidade) {
    this.quantidade = quantidade;
  }

  /**
   * @return the pedido
   */
  public Pedido getPedido() {
    return pedido;
  }

  /**
   * @param pedido the pedido to set
   */
  public void setPedido(Pedido pedido) {
    this.pedido = pedido;
  }
}
